/*
 * The contents of this file are subject to the GNU Lesser General Public
 * License Version 2.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.gnu.org/copyleft/lesser.html
 *
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 *
 * Developer:
 * Todd Ditchendorf, todd@ditchnet.org
 *
 */

/**
 *	@author Todd Ditchendorf
 *	@since 2005-03-12
 *	@version 0.8
 *
 *
 *
 *
 */
package it.blueocean.acanto.taglibrary.xml;

/**
 * <p>
 * Some of the {@link org.ditchnet.jsp.util.JspResponseWriter} class' public
 * instance methods write markup (XML, specifically) to the response stream. The
 * <code>Xml</code> interface, it's static inner interfaces <code>Tag</code> and
 * <code>Attr</code> enforce type-safety and decrease the likelyhood of
 * malformed XML (which is not truely XML anyway) being generated by the
 * JspResponseWriter class.
 * </p>
 * <p>
 * For example the <code>JspResponseWriter</code>'s <code>startElement()</code>
 * method accepts one parameter of type <code>Xml.Tag</code> instead of just a
 * <code>String</code>. Again, this ensures type safety, but more importantly,
 * allows a fixed set of markup elements to be sent to the response stream
 * making XML well-formedness errors much less likely.
 * </p>
 * <p>
 * This class is purely a utilitly class, and may not be instaciated by client
 * code (private constructor).
 * </p>
 * <p>
 * Note that the {@link org.ditchnet.xml.Xml.Tag} class implements the Type-Safe
 * Enum Pattern as described by Joshua Bloch in <em>Effective
 * 	Java</em>.
 * </p>
 * <p>
 * Subclasses of this class should represent a specific XML vocabulary or
 * application. For example, the {@link org.ditchnet.xml.Xhtml} class represents
 * the XHTML vocabulary.
 * </p>
 * 
 * 
 * 
 * @author Todd Ditchendorf
 * 
 * 
 */
public interface Xml
{

	/**
	 * <p>
	 * This class implements the Type-Safe Enum pattern as outlined by Joshua
	 * Bloch in <em>Effective Java</em>. The only constructor is private, and
	 * therefore this class may not be instanciated by client code.
	 * </p>
	 * <p>
	 * Subclasses of this class will provide enumerations of valid elements
	 * allowed in a particular XML vocabulary or application.
	 * </p>
	 * 
	 * @since 2005-03-12
	 * @version 0.8
	 * @author Todd Ditchendorf
	 * 
	 */
	public static interface Tag
	{
	}

	/**
	 * <p>
	 * Concrete implementations of this interface should impelement the
	 * Type-Safe Enum pattern as outlined by Joshua Bloch in
	 * <em>Effective Java</em> and provide static member variables that present
	 * the complete set of attribute names available in the XML vocabulary in
	 * question.
	 * </p>
	 * 
	 * @since 2005-03-12
	 * @version 0.8
	 * @author Todd Ditchendorf
	 * 
	 * 
	 * 
	 */
	public static interface Attr
	{
	}

}
